/**
 * @file TopCapObsMonitor.h
 * @author  
 * @brief 上盖障碍物检测
 * @version 1.0
 * @date 2020-07-23
 * 
 * @copyright Copyright (c) 2020
 * 
 */

#pragma once
#include "lib/contour.h"
#include "data_struct/geometry/PointCloud.h"

namespace behavior_controller
{

    class TopCapObsMonitor
    {
    public:
        /**
         * @brief 上盖障碍物检测的构造函数
         * @return
         */
        TopCapObsMonitor();

        /**
         * @brief 上盖障碍物检测的运行函数
         * @return
         */
        void run();

        /**
         * @brief 检测上盖区域是否有障碍物
         * @return
         */
        int CheakTopCapObs(PointCloud<double> &in_contour_points);

        /**
         * @brief 判断上盖区域内的点是静态还是动态，通过获取上盖上无障碍物时的一帧数据保存下来，有障碍物时与保存的数据对比，看障碍物是突然出现的还是原来就有的
         * @return
         */
        int IsStaticOrDynamic(PointCloud<double> &in_contour_points);

        PointCloud<double> lase_scan_point; //记录上盖上无障碍物时的一帧数据
        bool init=false;
    };

    //static 
    extern TopCapObsMonitor top_cap_obs_monitor;
} // namespace behavior_controller